<?php

namespace app\index\model;

use think\Db;
use think\Model;


class Apply extends Model
{

    protected $autoWriteTimestamp = 'int';

    // 定义时间戳字段名
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    public function getTelAttr($val){
        return substr_replace($val,'****',3,4);
    }

    public function getQqAttr($val){
        if (strlen($val) > 6 ){
            return substr_replace($val,'****',3,3);
        }else{
            return str_replace($val,'******',$val);
        }
    }

    public function getWeixinAttr($val){
        if (strlen($val) > 6 ){
            return substr_replace($val,'****',3,5);
        }else{
            return str_replace($val,'******',$val);
        }
    }

    public function getIsregAttr($val){
        return $val == 1 ? '是':'否' ;
    }

    public function getCreateTimeAttr($val){
        return date('Y-m-d H:i:s',$val);
    }

    /**
     * 购买
     **/
    public function bet($tel){
//        if ($this->request->isAjax())
        {
            // 查看这个号码是否被注册过了
            $ret = $this->getByTel($tel);

            // 如果没有注册过
            // 默认分配给多少人
            if ( $ret ){
//                $map['bignumber']  = ['<',db()::raw('neednumber')];
                // 查看已经分配多少人了
                if ( $ret->neednumber < $ret->bignumber){
                    $this->error = "已经分配完了";
                    return false;
                }

                $sy = $ret->neednumber - $ret->bignumber;
            } else {
                $sy = (int)config('site.max');
                $this->error = "不正确";
                return false;
            }


            /*
             * 筛选用户
             * 1 . 买过的就不在重复出现
             * 2 . 用户积分大于 配置的
             * 3.  每日进件数量不超过每日的限制额度
             *
             * */

            $id = $ret->id;
            $grade = config('site.grade');

            // 大于配置文件中的 的扣除4分
            if ($ret->zhimafen >= $grade['max']){
                $score = 4;
                $map['score'] = ['>=',4];
            }else{
                //小于580 的扣除3分
                $score = 3;
                $map['score'] = ['>=',3];
            }

            // 只查看正常的
            $map['status'] = 'normal';

            // 只分配给商户
            $map['parent_id'] = 0;


            // 查看最后一次的id
            $last_id = db('config')->where('name','user_last_id')->value('value');
            // 轮循商户
            $map['id'] = ['>',$last_id];

            // 查看用户最大的id
            $maxid = db('user a')->where(['status'=>'normal','parent_id'=>0])->max('id');

            // 所有可用的用户 是否够分配
            $seluser = db('user a')->where($map)->where('id','NOT IN',function ($query) use ($id){
                $query->table('jd_apply_bet')->where('apply_id',$id)->field('user_id');
            })->limit(20)->select();


            $Bet = model('ApplyBet');
            $i = 0;


            // 加入购买订单
            // 重组数据
            $us = [];
            $last_id = 0;
            foreach ($seluser as  $k=>$v){
                $use = $Bet->dayreg($v['id']);

                // 今日注册量超过了
                if ( $use->total >= $v['into_the_number']){ continue; }

                // 如果商户够分配
                if ($i >= $sy){
                    break;
                }

                $us[$v['id']] = $v;

                if ($maxid == $v['id']){
                    $last_id = 0;
                }else{
                    $last_id = $v['id'];
                }
                $i++;
            }



            if (count($us) < $sy){
                // 所有可用的用户 是否够分配
                $map['id'] = ['>',$last_id];
                $seluser = db('user a')->where($map)->where('id','NOT IN',function ($query) use ($id){
                    $query->table('jd_apply_bet')->where('apply_id',$id)->field('user_id');
                })->limit(20)->select();
                foreach ($seluser as  $k=>$v){
                    $use = $Bet->dayreg($v['id']);

                    // 今日注册量超过了
                    if ( $use->total >= $v['into_the_number']){ continue; }

                    // 如果商户够分配
                    if ($i >= $sy){
                        break;
                    }

                    $us[$v['id']] = $v;

                    if ($maxid == $v['id']){
                        $last_id = 0;
                    }else{
                        $last_id = $v['id'];
                    }
                    $i++;
                }
            }





            // 如果没有用户可以分配
            if ( !$us ){
                $this->error = "没有可以分配的商户";
                return false;
            }

            foreach ($us as  $k=>$v){

                // 延迟显示
                $time = 3600*$v['delay_show_time'];
                $addData = [
                    'apply_id'=>$ret->id,
                    'user_id'=>$v['id'],
                    'score'=>$score,
                    'apply_info'=>serialize($ret->toArray()),
                    'create_time'=>$ret->update_time+$time,
                    'bet_time'=>time(),
                    'admin_id'=>$v['id']
                ];

                Db::table('jd_apply_bet')->insert($addData);

                $residue = $v['score'] - $score;

                // 积分详情
                $addScore = [
                    'user_id'=>$v['id'],
                    'residue'=>$residue,
                    'score'=>$score,
                    'type'=>1,
                    'msg'=>'购买客户',
                    'admin_id'=>$v['id'],
                    'create_time'=>$ret->update_time+$time,
                    'takeout'=>1
                ];

                db('score_detail')->insert($addScore);

                // 今日进件+1
                model('apply')->where('id',$ret->id)->setInc('bignumber');


                // 扣除积分
                $User = model('user');
                $User->where('id',$v['id'])->setDec('score',$score);
            }

            // 记录id
            $end_id = end($us);
//            if ($maxid == end($end_id['id'])){
//                db('config')->where('name','user_last_id')->update(['value'=>0]);
//            }else{
            db('config')->where('name','user_last_id')->update(['value'=>$end_id['id']]);
//            }



        }
    }
    public function bet2($tel){
//        if ($this->request->isAjax())
        {
            // 查看这个号码是否被注册过了
            $ret = $this->getByTel($tel);

            // 如果没有注册过
            // 默认分配给多少人
            if ( $ret ){
//                $map['bignumber']  = ['<',db()::raw('neednumber')];
                // 查看已经分配多少人了
                if ( $ret->neednumber < $ret->bignumber){
                    $this->error = "已经分配完了";
                    return false;
                }

                $sy = $ret->neednumber - $ret->bignumber;
            } else {
                $sy = (int)config('site.max');
                $this->error = "不正确";
                return false;
            }


            /*
             * 筛选用户
             * 1 . 买过的就不在重复出现
             * 2 . 用户积分大于 配置的
             * 3.  每日进件数量不超过每日的限制额度
             *
             * */

            $id = $ret->id;
            $grade = config('site.grade');

            // 大于配置文件中的 的扣除4分
            if ($ret->zhimafen >= $grade['max']){
                $score = 4;
                $map['score'] = ['>=',4];
            }else{
                //小于580 的扣除3分
                $score = 3;
                $map['score'] = ['>=',3];
            }

            // 只查看正常的
            $map['status'] = 'normal';

            // 只分配给商户
            $map['parent_id'] = 0;

            // 查看最后一次的id
            $last_id = db('config')->where('name','user_last_id')->value('value');

            // 轮循商户
            $map['id'] = ['>',$last_id];

            // 查看用户最大的id
            $maxid = db('user a')->where(['status'=>'normal','parent_id'=>0])->max('id');

            // 所有可用的用户 是否够分配
            $seluser = db('user a')->where($map)->where('id','NOT IN',function ($query) use ($id){
                $query->table('jd_apply_bet')->where('apply_id',$id)->field('user_id');
            })->limit(20)->select();


            // 如果没有用户可以分配
            if ( !$seluser ){
                $this->error = "没有可以分配的商户";
                return false;
            }

            $Bet = model('ApplyBet');
            $i = 0;

            // 加入购买订单
            foreach ($seluser as  $k=>$v){
                $use = $Bet->dayreg($v['id']);

                if ( $use->total >= $v['into_the_number']){
                    continue;
                }


                if ($i >= $sy){
                    return true;
                    break;
                }

                // 延迟显示
                $time = 3600*$v['delay_show_time'];
                $addData = [
                    'apply_id'=>$ret->id,
                    'user_id'=>$v['id'],
                    'score'=>$score,
                    'apply_info'=>serialize($ret->toArray()),
                    'create_time'=>$ret->update_time+$time,
                    'bet_time'=>time(),
                    'admin_id'=>$v['id']
                ];

                Db::table('jd_apply_bet')->insert($addData);

                $residue = $v['score'] - $score;

                // 积分详情
                $addScore = [
                    'user_id'=>$v['id'],
                    'residue'=>$residue,
                    'score'=>$score,
                    'type'=>1,
                    'msg'=>'购买客户',
                    'admin_id'=>$v['id'],
                    'create_time'=>$ret->update_time+$time,
                    'takeout'=>1
                ];

                db('score_detail')->insert($addScore);

                // 今日进件+1
                model('apply')->where('id',$ret->id)->setInc('bignumber');


                // 扣除积分
                $User = model('user');
                $User->where('id',$v['id'])->setDec('score',$score);
                $i++;
            }

            // 记录id
            $end_id = end($seluser);

            if ($maxid == end($end_id['id'])){
                db('config')->where('name','user_last_id')->update(['value'=>0]);
            }else{
                db('config')->where('name','user_last_id')->update(['value'=>$end_id['id']]);
            }

        }
    }


}